Linux Helper(SCL)のインストール

スマート コンパチビリティ レイヤーは、Windowsリリース10.22以降向けのIncredibuildから利用可能です。

スマート コンパチビリティ レイヤーを利用するには専用ライセンスが必要です。

スマート コンパチビリティ レイヤー

Incredibuildスマート コンパチビリティ レイヤー(SCL)によって、ユーザーはIncredibuild for WindowsグリッドでヘルパーとしてLinuxマシンを使用できます。これらのLinuxマシンは、Windowsマシンからのビルドをシームレスに支援することができます。

Windowsマシンの代わりにLinuxマシンを使用することで、ユーザーはクラウド(AWS、Azure、またはGCP)上の既存のIncredibuildインフラストラクチャのコストを削減できます。また、クラウドインスタンスのコストが高いという理由で、自社運用のIncredibuildインフラストラクチャをクラウドで拡大させることに消極的だったユーザーも再検討し、場合によっては、ビルドをさらに高速化できます。

SCL AgentはLinuxホスト上でコンテナとして実行されます。DockerやPodmanなどの標準的なコンテナ環境以外をインストールする必要がないため、非常に簡単に展開して使用できます。

スマート コンパチビリティ レイヤーは、その基礎レイヤーとしてWineを利用しています。しかし、SCLはWineを大幅に拡張およびカスタマイズして、Incredibuildの並列化、キャッシュ、および分散処理技術とシームレスに統合します。この独自の組み合わせにより、Linuxシステム上のWindowsワークロードを高速化するための堅牢かつ効率的な環境を実現できます。

ホスト要件

  • Ubuntu 22.04コンテナを実行する(SCLコンテナはUbuntu 22.04を実行します)

  • DockerまたはPodman

  • 8コア(x64)以上

  • 1コアあたり2~4GBのRAM

  • ホスト上でCPU負荷の高い追加プロセスを実行しない

  • ホストの物理コアを超えるコアをコンテナにオーバープロビジョニングしない

  • その他の要件はシステム要件に示す通りです

最高のパフォーマンスを得るには、8~16コアのホスト上で単一のSCLコンテナを使用することを推奨します。これは、SCLを展開する最も簡単な方法です。クラウド環境では、SCLで最高のコスト/パフォーマンスを得るために、8コアのマシンタイプを使用してください。

ホストのコア数が16コアを超えている場合(オンプレミスサーバーでは一般的)、複数のSCLコンテナが推奨されます(以下のスクリプト例を参照してください)。正確なコンテナ構成の選択にはある程度の試行錯誤が必要な場合があるため、カスタマーサクセスマネージャーにお問い合わせください。

1ホストあたり1つのSCLコンテナの実行

Linuxホスト上で以下のコマンドを実行します。

コピー
COORD=192.168.1.1 && \ 
IBVER=10.24.0 && \ 
docker run --detach --restart unless-stopped \ 
       --hostname $HOSTNAME \ 
       --name IncredibuildHelper \ 
       --env COORD_IP=$COORD \ 
       --network host \ 
       public.ecr.aws/incredibuild/scl:latest_$IBVER 

スクリプトのCoordinatorのIP アドレス(192.168.1.1)とIncredibuild のバージョン(10.22.0)を、お使いのCoordinatorのIPアドレスとIncredibuildのバージョンに合わせて置き換えてください。

1ホストあたり複数のSCLコンテナの実行

Linuxホストのコア数が16コアを超えている場合、ホスト上で複数のSCLコンテナを実行する方が効率的であるため、ビルドの高速化を推進できる可能性があります。担当のカスタマーサクセスマネージャーまたはソリューションアーキテクトが、環境のチューニングをサポートできます。

--cpusまたは--cpuset-cpusオプションを使用して、コンテナに割り当てられるコアの数を制限する必要があります。

各コンテナには、(Incredibuildグリッド全体で)一意のホスト名と専用TCPポート(1コアあたり1ポート + 1)が必要であることに注意してください。ホスト名はコンテナ実行時に設定でき、TCPポートの範囲はコンテナに渡された環境変数を使用して設定できます。

変数名 説明 コマンドの例

COORD_IP

CoordinatorマシンのIPアドレスまたは名前。

182.168.1.1

SERVICE_PORT

AgentサービスのTCPポート。

31105

HELPER_PORT

ヘルパーサービスの最初のTCPポート。

31106

HELPER_CORES

ヘルパーに割り当てられたコアの数。

8

コンテナは、SERVICE_PORTと、HELPER_PORTからHELPER_PORT+HELPER_CORES-1までのポートを使用します。

Linuxホスト上で以下のスクリプト(または同様のもの)を実行します。

コピー
COORD=192.168.1.1 && \ 
IBVER=10.24.0 && \ 
CORES_PER_CONTAINER=8 && \ 
TOTAL_CORES=$(nproc) && \ 
NUM_CONTAINERS=$((TOTAL_CORES / CORES_PER_CONTAINER)) && \ 
START_SERVICE_PORT=31105 && \ 
START_HELPER_PORT=31106 && \ 
for i in $(seq 0 $((NUM_CONTAINERS - 1))); do \ 
  SERVICE_PORT=$((START_SERVICE_PORT + (i * (CORES_PER_CONTAINER + 1)))) && \ 
  HELPER_PORT=$((START_HELPER_PORT + (i * (CORES_PER_CONTAINER + 1)))) && \ 
  docker run --detach --restart unless-stopped \  
       --hostname "SCL${i}_${HOSTNAME}" \  
       --name "SCL${i}_${HOSTNAME}" \  
       --cpus=$CORES_PER_CONTAINER \ 
       --env COORD_IP=$COORD \  
       --env SERVICE_PORT=$SERVICE_PORT \ 
       --env HELPER_PORT=$HELPER_PORT \ 
       --env HELPER_CORES=$CORES_PER_CONTAINER \ 
       --network host \ 
       public.ecr.aws/incredibuild/scl:latest_$IBVER ; \ 
done

上記のスクリプトのCoordinatorのIP アドレス(192.168.1.1)とIncredibuild のバージョン(10.23.0)を、お使いのCoordinatorのIPアドレスとIncredibuildのバージョンに合わせて置き換えてください。コンテナあたりのコア数(8)を、各コンテナに割り当てたいコアの数(8または16を推奨)に置き換えてください。

制限事項

SCLは以下のツールのみ高速化します(他のツールを使用するタスクはサポートされておらず、SCLヘルパーには配布されません)。

  • Cl.exe

  • Cl-filter.exe

  • Clang.exe

  • ShaderCompileWorker.exe(Unreal Engine)